package org.mogu;


import java.lang.reflect.Field;


import org.mogu.control.CustomedHeadShow;
import org.mogu.control.model.IMUser;
import org.mogu.db.DBhelper;
import org.mogu.service.InfoSync;
import org.mogu.staticvalue.Convert;
import org.mogu.tools.HeaderPic;

import com.feedback.UMFeedbackService;



import android.app.TabActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;

/*
 * QQ的主界面
 * 
 * 注意：
 * 继承TabActivity，布局文件中TabWidget控件的id和
 * 	FrameLayout显示tab内容控件id必须使用系统id，为分别为
 *  android:id/tabs 和 android：id/tabcontent
 *  
 * @author androidSource@139.com
 * */
public class QQ_Main extends TabActivity {
	
	/*
	 * 相关对象定义
	 * */
	//本类对象
	public  static QQ_Main instance = null;
	//主界面头部分中昵称前表示状态的图片控件
//	private ImageView headStatus = null;
	//主界面头部分表示系统设置控件
//	private ImageView sysSet = null;
	//TabWidgetImage的图片资源数组
	private ImageView[] tabWidgetImage = null;
	//显示昵称的控件
	private TextView nickName = null;
	//昵称和在线状态线性布局控件
//	private LinearLayout nickNameLinearLayout = null;
//	//显示头像的线性布局控件
//	private LinearLayout headLinearLayout = null;
//	//头部分中系统设置按钮布局控件
//	private LinearLayout sysSetLinearLayout = null;
	
	Field mBottomLeftStrip;  
	Field mBottomRightStrip;  
	
	//TabHost对象
	private  TabHost localTabHost = null;
	//TabHost中TabWidget对象
	private TabWidget localTabWidget = null;
	
	private String code=null;
	private String maincode=null;
	
	private IMUser imUser=new IMUser();
	
	private CustomedHeadShow customedHeadShow;
	Intent intent;
	
	public static final int UPDATEINFO = Menu.FIRST + 1;
	public static final int SEARCH = Menu.FIRST + 2;
	public static final int BACK = Menu.FIRST + 3;
	public static final int FACEBACK = Menu.FIRST + 4;
	
	
	
	/*
	 * 自定义的TabWidget控件--显示最近联系，好友列表，好友群的tab
	 * 
	 * */
//	private CustomedTabWidget localCustomedTabWidget = null;
	
	 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        intent=this.getIntent();  
        Bundle bunde = intent.getExtras();
		code = bunde.getString("code");
		maincode=code.split("-")[0];
		String notice = bunde.getString("notice");
		if(notice!=null&&code.indexOf(notice)==0){
			Convert.IM_Init_tab=0;
		}else{
			Convert.IM_Init_tab=1;
		}
		
        
//        //启用窗体的扩展特性,此处请求为没有标题的activity
//        requestWindowFeature(Window.FEATURE_NO_TITLE);
        
        //加载当前使用的布局文件
        setContentView(R.layout.qq_main);
        customedHeadShow=(CustomedHeadShow)findViewById(R.id.title_face);
        instance = this;
        updateInfo();
       
//        //设置当前状态
//        nickNameLinearLayout = (LinearLayout)findViewById(R.id.to_change_status);
//        nickNameLinearLayout.setOnClickListener(new View.OnClickListener() {
//			
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				SettingManagerActivity.SetStatuDialog(QQ_Main.this);
//			}
//		});
        
        
        /*
         * 系统设置
         * */
//        headLinearLayout = (LinearLayout)findViewById(R.id.to_option_area);
//        headLinearLayout.setOnClickListener(new View.OnClickListener() {
//			
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				Intent mIntent = new Intent();
//				mIntent.setClass(QQ_Main.this, SettingManagerActivity.class);
//				instance.startActivity(mIntent);
//			}
//		});
//        sysSetLinearLayout = (LinearLayout)findViewById(R.id.to_sys_option_area);
//        sysSetLinearLayout.setOnClickListener(new View.OnClickListener() {
//			
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				Intent mIntent = new Intent();
//				mIntent.setClass(QQ_Main.this, SettingManagerActivity.class);
//				instance.startActivity(mIntent);
//			}
//		});
        
        
//        sysSet = (ImageView)findViewById(R.id.statuicons2);//获取主界面中头部分系统设置图片控件
//        sysSet.setImageResource(R.drawable.statue_sound);//设置显示系统设置控件图片
        
      
    	mTabHost();//TabHost相关初始化
		
		mTabWidget();//TabWidget相关初始化
		
		//设置当前显示的activity
		localTabHost.setCurrentTabByTag("1");
		
		
//        //获取主界面头部分中昵称前表示状态的图片控件
//        headStatus = (ImageView)findViewById(R.id.statuicons1);
//        headStatus.setImageResource(R.drawable.status_online);
//        TreeNode mUser = QQApplication.instance.getUser();
//        if(mUser.getOnLine().equals("true")){
//        	//设置显示在线图
//        	headStatus.setImageResource(R.drawable.status_online);
//        }else{
//        	headStatus.setImageResource(R.drawable.status_offline);
//        }
        
       
		changeStatus();
		
    }
    public void updateInfo(){
    	String[] imUserArr={Convert.uname,code};
		 synchronized (InfoSync.class) {
			 Cursor userCursor = DBhelper.getDBHelper(this).getReadableDatabase().rawQuery(
					 "select code,title,content,replyType,maincode,level,father,lastUpdateTime from content where username=? and father=? order by lastUpdateTime desc",
					 imUserArr);
			 userCursor.moveToFirst();
			 while(!userCursor.isAfterLast()){
				 if("0".equals(userCursor.getString(1))){
					 imUser.setCode(userCursor.getString(0));
					 imUser.setTitle(userCursor.getString(1));
					 imUser.setContent(userCursor.getString(2));
					 imUser.setReplyType(userCursor.getString(3));
					 imUser.setMaincode(userCursor.getString(4));
					 imUser.setLevel(userCursor.getString(5));
					 imUser.setFather(userCursor.getString(6));
					 imUser.setLastUpdateTime(userCursor.getString(7));
				 }
				 userCursor.moveToNext();
			 }
			 userCursor.close();
		 }
		 changeStatus();
    }
    
    public void changeStatus(){
    	 //获取显示昵称的控件
        nickName = (TextView)findViewById(R.id.title);
        //设置当前显示的昵称
        nickName.setText(imUser.getUnicename());
        customedHeadShow.setDrawableDefault(HeaderPic.getHeader(this,imUser.getHeader()));
        if(imUser.getNicename()==null||"".equals(imUser.getNicename())){
        	onUpdateInfo(null);
        }
    }
    
    public void onUpdateInfo(View view){
    	Intent intent = new Intent(this, QQ_Info.class);
    	Bundle bundle = new Bundle();
		bundle.putSerializable("iMUser",imUser);
		bundle.putString("maincode",maincode);
		bundle.putString("code",code);
		intent.putExtras(bundle);
//		intent.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
    	startActivityForResult(intent, 0);
    }
    public void onSearch(View view){
    	Intent intent = new Intent(this, QQ_Search.class);
    	Bundle bundle = new Bundle();
    	bundle.putString("maincode",maincode);
    	bundle.putString("code",code);
    	intent.putExtras(bundle);
//    	intent.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
    	startActivityForResult(intent, 0);
    }
    
    public void onBack(View view) {
    	if(intent==null){
    		return;
    	}
    	
    	this.setResult(RESULT_FIRST_USER, intent);
    	this.finish(); 
    	
    }
    
    
    /*
     * dispatchKeyEvent是做分发的工作,具体流程如下：
     * 当键盘按下时 
	 * 首先触发dispatchKeyEvent
	 * 然后触发onUserInteraction
	 * 再次onKeyDown
     * 如果按下紧接着松开，则是俩步
     * 紧跟着触发dispatchKeyEvent
     * 然后触发onUserInteraction
     * 再次onKeyUp
     * */
    public boolean dispatchKeyEvent(KeyEvent event){
		
    	try {
    		super.dispatchKeyEvent(event);
		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}
		
		return false;
    }
    
    /*
     * TabHost的初始化
     * */
    public void mTabHost(){
    	  /*
         * TabHost初始化
         * */
        //自定义的CustomedTabWidget对象
//        localCustomedTabWidget = (CustomedTabWidget)findViewById(R.id.tabwidget);
        
        
        //获得布局文件中的TabHost控件对象
        localTabHost = getTabHost();
        
        /*
         *  TabHost.TabSpec为tab选项卡设置的接口
         *  选项卡内容包括选项卡指示符,内容和tag标签
         *  选项卡标示符：可以一个标题或一个标题和图标
         *  内容：视图ID，TabHost.TabContentFactory创建的视图内容和加载Activity的Intent对象
         *  
         *  newTabSpec(String tag)--创建选项卡，参数为
         *  setIndicator(String label)--指定一个标签作为选项卡的指示符
         *  
         *  此处添加的是空间动态界面
         * */
        //将整型转换成字符
//        String str1 = String.valueOf(0);
//        TabHost.TabSpec localTabSpec1 = localTabHost.newTabSpec(str1).setIndicator("");
//        //创建Intent对象，Intent(Context packageContext,Class<？> clas),参数1--所属activity，参数2--需要跳转的类
//        Intent localIntent2 = new Intent(this, ChatWindowsActivity.class);
//        //设置选项卡的内容，为加载Activity的Intent对象
//        TabHost.TabSpec localTabSpec2 = localTabSpec1.setContent(localIntent2);
//        //TabHost添加选项卡
//        localTabHost.addTab(localTabSpec2);
        
        
        /*
         *  TabHost.TabSpec为tab选项卡设置的接口
         *  选项卡内容包括选项卡指示符,内容和tag标签
         *  选项卡标示符：可以一个标题或一个标题和图标
         *  内容：视图ID，TabHost.TabContentFactory创建的视图内容和加载Activity的Intent对象
         *  
         *  newTabSpec(String tag)--创建选项卡，参数为
         *  setIndicator(String label)--指定一个标签作为选项卡的指示符
         *  
         *  此处添加的是好友列表界面
         * */
        //将整型转换成字符
        String str2 = String.valueOf(1);
        TabHost.TabSpec localTabSpec3 = localTabHost.newTabSpec(str2).setIndicator("");
        //创建Intent对象，Intent(Context packageContext,Class<？> clas),参数1--所属activity，参数2--需要跳转的类
        Intent localIntent3 = new Intent(this, ContactListActivity.class);
        Bundle bundle = new Bundle();
		bundle.putString("code",code);
        localIntent3.putExtras(bundle);
        //设置选项卡的内容，为加载Activity的Intent对象
        TabHost.TabSpec localTabSpec4 = localTabSpec3.setContent(localIntent3);
        //TabHost添加选项卡
        localTabHost.addTab(localTabSpec4);
        
        
        /*
         *  TabHost.TabSpec为tab选项卡设置的接口
         *  选项卡内容包括选项卡指示符,内容和tag标签
         *  选项卡标示符：可以一个标题或一个标题和图标
         *  内容：视图ID，TabHost.TabContentFactory创建的视图内容和加载Activity的Intent对象
         *  
         *  newTabSpec(String tag)--创建选项卡，参数为
         *  setIndicator(String label)--指定一个标签作为选项卡的指示符
         *  
         *  此处添加的是QQ应用界面
         * */
         //将整型转换成字符
//        String str3 = String.valueOf(2);
//        TabHost.TabSpec localTabSpec5 = localTabHost.newTabSpec(str3).setIndicator("");
//        //创建Intent对象，Intent(Context packageContext,Class<？> clas),参数1--所属activity，参数2--需要跳转的类
//        Intent localIntent4 = new Intent(this, QQBrowserActivity.class);
//        //设置选项卡的内容，为加载Activity的Intent对象
//        TabHost.TabSpec localTabSpec6 = localTabSpec5.setContent(localIntent4);
//        //TabHost添加选项卡
//        localTabHost.addTab(localTabSpec6);
        
        
    }
    
    
    /*
     * TabWidget--底部选择部分
     * */
    public void mTabWidget(){
        /*
         * TabWidget--底部选择部分
         * */
        Init_TabWidgetImage();
        localTabWidget = getTabWidget();
        localTabWidget.setFocusable(false);
        localTabWidget.removeAllViews();
        int i1 = 0;
        while (true){
          int i2 = tabWidgetImage.length;
          
          if (i1 >= i2){
        	  break;
          }
          localTabWidget.addView(tabWidgetImage[i1]);
          tabWidgetImage[i1].setFocusable(false);
          i1 += 1;
        }
        //去除底部下划线
        Undis_WhiteLine();
    }
    
    public void Init_TabWidgetImage(){
    	 tabWidgetImage = new ImageView[3];
    	 for(int i = 0; i < tabWidgetImage.length; i++){
    		 tabWidgetImage[i] = new ImageView(this);
    		 
    		 if(i == 0){
    			
    			 tabWidgetImage[i].setImageResource(R.drawable.bottombar_2);
    		 }else if(i == 1){
    			 tabWidgetImage[i].setImageResource(R.drawable.menu_sys_search_buddy);
//    			 tabWidgetImage[i].setImageResource(R.drawable.bottombar_2);
    		 }else if(i == 2){
    			 tabWidgetImage[i].setImageResource(R.drawable.menu_sys_opt);
    		 }
    	 }
    }
    
    /** 
     * 此方法是为了去掉系统默认的色白的底角 
     */
    public void Undis_WhiteLine(){
    	  /** 
         * 此方法是为了去掉系统默认的色白的底角 
         * 
         * 在 TabWidget中mBottomLeftStrip、mBottomRightStrip 
         * 都是私有变量，但是我们可以通过反射来获取 
         * 
         * 由于Android 2.2，2.3的接口不同，加个判断 
         */  
       if (Float.valueOf(Build.VERSION.RELEASE.substring(0, 3)) <= 2.1) {  
 	        try {  
 		        mBottomLeftStrip = localTabWidget.getClass().getDeclaredField ("mBottomLeftStrip");  
 		        mBottomRightStrip = localTabWidget.getClass().getDeclaredField ("mBottomRightStrip");  
 		        if(!mBottomLeftStrip.isAccessible()) {  
 		        	mBottomLeftStrip.setAccessible(true);  
 		        }  
 		        if(!mBottomRightStrip.isAccessible()){  
 		        	mBottomRightStrip.setAccessible(true);  
 		        }  
 		        mBottomLeftStrip.set(localTabWidget, getResources().getDrawable (R.drawable.bottom));  
 		        mBottomRightStrip.set(localTabWidget, getResources().getDrawable (R.drawable.bottom));  
 		          
 	        } catch (Exception e) {  
 	        	e.printStackTrace();  
 	        }  
         } else {  
           
         //如果是2.2,2.3版本开发,可以使用一下方法tabWidget.setStripEnabled(false)  
//         tabWidget.setStripEnabled(false);  
           
         //但是很可能你开发的android应用是2.1版本，  
         //tabWidget.setStripEnabled(false)编译器是无法识别而报错的,这时仍然可以使用上面的  
         //反射实现，但是需要修改代码  
           
 	        try {  
 		        //2.2,2.3接口是mLeftStrip，mRightStrip两个变量，当然代码与上面部分重复了  
 		        mBottomLeftStrip = localTabWidget.getClass().getDeclaredField ("mLeftStrip");  
 		        mBottomRightStrip = localTabWidget.getClass().getDeclaredField ("mRightStrip");  
 		        if(!mBottomLeftStrip.isAccessible()) {  
 		        	mBottomLeftStrip.setAccessible(true);  
 		        }  
 		        if(!mBottomRightStrip.isAccessible()){  
 		        	mBottomRightStrip.setAccessible(true);  
 		        }  
 		        mBottomLeftStrip.set(localTabWidget, getResources().getDrawable (R.drawable.bottom));  
 		        mBottomRightStrip.set(localTabWidget, getResources().getDrawable (R.drawable.bottom));  
 		          
 	        } catch (Exception e) {  
 	        	e.printStackTrace();  
 	        }  
         } 
    }
    
    
    

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
    	System.out.println("onKeyDown");
    	
    	return super.onKeyDown(keyCode, event);
    }
    
    public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenu.ContextMenuInfo menuInfo) {
		populateMenu(menu);
	}

	public void populateMenu(Menu menu) {
		menu.add(Menu.NONE, UPDATEINFO, Menu.NONE, "修改个人信息");
		menu.add(Menu.NONE, SEARCH, Menu.NONE, "查找用户");
		menu.add(Menu.NONE, BACK, Menu.NONE, "返回蘑菇");
		menu.add(Menu.NONE, FACEBACK, Menu.NONE, "求助");
	}

	/*
     * 继承重写创建菜单函数
     * 此函数只在第一次按Menu键显示Menu时显示
     * 
     * */
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		populateMenu(menu);
		return (super.onCreateOptionsMenu(menu));
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		return (applyMenuChoice(item) || super.onOptionsItemSelected(item));
	}

	public boolean onContextItemSelected(MenuItem item) {
		return (applyMenuChoice(item) || super.onContextItemSelected(item));
	}
	
	public boolean applyMenuChoice(MenuItem item) {
		switch (item.getItemId()) {
		case UPDATEINFO:
			onUpdateInfo(null);
			return true;
		case SEARCH:
			onSearch(null);
			return true;
		case BACK:
			onBack(null);
			return true;
		case FACEBACK:
			UMFeedbackService.openUmengFeedbackSDK(this);
			return true;
		}
		return false;
	}
    
    
    public void onResume() {
	    super.onResume();
	    updateInfo();
	}
//	public void onPause() {
//	    super.onPause();
//	    MobclickAgent.onPause(this);
//	}
  
}